package com.cainaer.product.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 商品表
 * </p>
 *
 * @author Tina
 * @since 2020-09-11
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class Product implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 商品自增ID
     */
    @TableId(value = "product_id", type = IdType.AUTO)
    private Long productId;

    /**
     * 商品标题
     */
    private String productName;

    /**
     * 商品分类编号
     */
    private Long categoryId;

    /**
     * 商家编号
     */
    private Long shopId;

    /**
     * 配送方式 是否支持自取=>（1、自取）
     */
    private Integer freightId;

    /**
     * 类型编号
     */
    private Long typeId;

    /**
     * 简述
     */
    private String sketch;

    /**
     * 商品描述
     */
    private String intro;

    /**
     * 商品关键字
     */
    private String keywords;

    /**
     * 标签
     */
    private String tags;

    /**
     * 商品型号
     */
    private String marque;

    /**
     * 仓库条码
     */
    private String barcode;

    /**
     * 品牌编号
     */
    private Long brandId;

    /**
     * 虚拟购买量
     */
    private Integer virtualNumber;

    /**
     * 商品价格
     */
    private BigDecimal price;

    /**
     * 市场价格
     */
    private BigDecimal marketPrice;

    /**
     * 可使用积分抵消
     */
    private Integer integral;

    /**
     * 库存量
     */
    private Integer stock;

    /**
     * 库存警告
     */
    private Integer warningStock;

    /**
     * 封面图
     */
    private String pictureUrl;

    /**
     * 画册图片，连产品图片限制为5张，以逗号分割
     */
    private String albumPics;

    /**
     * 产品详情网页内容
     */
    private String pcHtml;

    /**
     * 移动端网页详情
     */
    private String detailMobileHtml;

    /**
     * 促销开始时间
     */
    private String promotionStartTime;

    /**
     * 促销结束时间
     */
    private String promotionEndTime;

    /**
     * 活动限购数量
     */
    private Integer promotionPerLimit;

    /**
     * 以逗号分割的产品服务：1->无忧退货；2->快速退款；3->免费包邮
     */
    private String serviceIds;

    /**
     * 促销类型：0->没有促销使用原价;1->使用促销价；2->使用会员价；3->使用阶梯价格；4->使用满减价格；5->限时购
     */
    private Integer promotionType;

    /**
     * 状态 (0=>上架,1=>下架,2=>预售,3=>未上架，4->已删除)
     */
    private Integer status;

    /**
     * 审核状态( 0审核成功 1审核失败 2未审核 )
     */
    private Integer state;

    /**
     * 是否是套餐(0是/1否)
     */
    private Integer isPackage;

    /**
     * 是否是推荐商品(0是/1否)
     */
    private Integer isRecommend;

    /**
     * 是否支持自称商品
     */
    private Integer isCallOneself;


    /**
     * 是否是积分产品(0是/1否)
     */
    private Integer isIntegral;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 单位
     */
    private String unit;

    /**
     * 商品重量，默认为克
     */
    private BigDecimal weight;

    /**
     * 产品分类名称
     */
    private String productCategoryName;

    /**
     * 品牌名称
     */
    private String brandName;

    /**
     * 删除时间
     */
    private String deletedTime;

    /**
     * 创建时间
     */
    private String createTime;

    /**
     * 更新时间
     */
    private String updatedTime;

    /**
     * 自定义或者系统规定好的名称
     */
    private String systemAttributeName;

    /**
     * 商品SKU 表
     */
    @TableField(exist = false)
    private ProductSku productSku;

    /**
     * 商品SKU 表
     */
    @TableField(exist = false)
    private List<ProductSku> productSkus;

    /**
     * 商品规格属性绑定表
     */
    @TableField(exist = false)
    private List<ProductAttributeBindOption> productAttributeBindOptions;

    /**
     * 商品属性表
     */
    @TableField(exist = false)
    private ProductAttributeOption productAttributeOption;

    /**
     * 商品规格属性绑定表
     */
    @TableField(exist = false)
    private ProductAttributeBindOption productAttributeBindOption;

    /**
     * 商品自定义规格表
     */
    @TableField(exist = false)
    private ProductAttribute productAttribute;

    /**
     * 商品分类
     */
    @TableField(exist = false)
    private ProductCategory productCategory;

}
